#! /bin/gawk -f
#
# DCtest2 (29 Aug 2006)
# gawk program for computing the averge running time etc
# for a set of experiments involving all files of a corpus
#


# --- initialize -----------
BEGIN {
# skip first line
getline;
# skip corpus and algorithm 
getline;

# get number of files 
getline;
files = $1;
# get number of tests
getline;
runs = $1;

 tot_originali=0;
 tot_compressi=0;
 tot_ctime=0;
 tot_dtime=0;

# compute average
{
  for (i=0;i<files;i++) {

    file_time = 0;
    for (j=0;j<runs;j++) {
      getline;                      # get compression time
      time_user = $3;
      time_system = $5;
      file_time += (time_user+time_system);
    }
    # togliere il commento per stampare qui il tempo di compressione 
    # printf "& %.1f", file_time/runs # print 1 decimal digit
    ave_ctime = file_time/runs;  # tempo medio di compressione in secondi
    tot_ctime+=ave_ctime;

    file_time=0;
    for (j=0;j<runs;j++) {
      getline;                      # get decompression time
      time_user = $3;
      time_system = $5;
      file_time += (time_user+time_system);
    }
    # togliere il commento per stampare qui il tempo di decompressione
    # printf " %.1f", file_time/runs  # print 1 decimal digit
    ave_dtime = file_time/runs;  # tempo medio di decompressione in secondi
    tot_dtime+=ave_dtime;

    getline;                        # check compression
    if($2!="OK") {
      printf "Compression/decompression Error!\n"
    }

    getline;                      # original size
    original_size = $3;
    tot_originali+=original_size;
    getline;                      # compressed size
    compr_size = $3;
    tot_compressi+=compr_size;

    # ---- stampe --------------
    printf " & %.3f", (8.0*compr_size)/original_size
    # printf " %.4f", (100.0*(original_size-4*compr_size))/original_size
    # velocita di compressione microsecondi per byte
    #printf " & %.2f", ave_ctime*(1000000.0/original_size)
    # velocita di decompressione microsecondi per byte
    #printf " & %.2f", ave_dtime*(1000000.0/original_size)
    # -------------------------

    getline;                      # skip end of file
  }
  printf " & %.3f", (8.0*tot_compressi)/tot_originali
  # printf " %.4f", (100.0*(tot_originali-4*tot_compressi))/tot_originali
  printf " & %.2f", (tot_ctime*(1000000.0/tot_originali))
  printf " & %.2f", (tot_dtime*(1000000.0/tot_originali))
  printf "\\\\ \\hline"         # questo serve per il tex
  printf "\n"
  getline;                       # skip end of benchmark
}
}


